#ifndef INFRAREDINFOTAB_H
#define INFRAREDINFOTAB_H

#include <QWidget>
#include <QHBoxLayout>
#include "tabframe/mapinfo/mapinfotab.h"
#include "infraredfeature.h"
#include <memory>
/**
 * @brief The InfraredInfoTab class  红外图谱
 */
class InfraredInfoTab : public MapInfoTab
{
    Q_OBJECT
public:
    explicit InfraredInfoTab(QWidget *parent = nullptr);
    virtual ~InfraredInfoTab();
public:
    /**
    * @brief 设置检测数据类型编码
    * @param code 数据类型编码
    */
    void setDataTypeCode(uint8_t code) override;

    /**
    * @brief 设置图谱数据长度
    * @param length 数据长度
    */
    void setDataLength(int32_t length) override;

    /**
    * @brief 设置图谱生成时间
    * @param time 生成时间
    */
    void setCreateTime(const QString& time) override;

    /**
    * @brief 设置图谱性质
    * @param property 图谱性质
    */
    void setChartProperty(const DataSpecificationGW::SpectrumCharacter& property) override;

    /**
    * @brief 设置被测设备名称
    * @param name 设备名称
    */
    void setDeviceName(const QString& name) override;

    /**
    * @brief 设置被测设备编码
    * @param code 设备编码
    */
    void setDeviceCode(const QString& code) override;

    /**
    * @brief 设置测点名称
    * @param name 测点名称
    */
    void setMeasurementName(const QString& name) override;

    /**
    * @brief 设置测点编码
    * @param code 测点编码
    */
    void setMeasurementCode(const QString& code) override;

    /**
    * @brief 设置检测通道标志
    * @param flag 通道标志
    */
    void setChannelFlag(int64_t flag) override;

    /**
    * @brief 设置存储数据类型
    * @param type 数据类型
    */
    void setDataType(uint8_t type) override;

    /**
    * @brief 设置温度单位
    * @param unit 单位
    */
    void setTemperatureUnit(uint8_t unit) override;

    /**
    * @brief 设置温度点阵宽度
    * @param width 宽度
    */
    void setTemperatureMatrixWidth(int32_t width) override;

    /**
    * @brief 设置温度点阵高度
    * @param height 高度
    */
    void setTemperatureMatrixHeight(int32_t height) override;

    /**
    * @brief 设置可见光照片数据长度
    * @param length 数据长度
    */
    void setVisibleLightPhotoDataLength(int32_t length) override;

    /**
    * @brief 设置红外照片数据长度
    * @param length 数据长度
    */
    void setInfraredPhotoDataLength(int32_t length) override;

    /**
    * @brief 设置辐射率
    * @param emissivity 辐射率值
    */
    void setEmissivity(float emissivity) override;

    /**
    * @brief 设置测试距离
    * @param distance 距离值
    */
    void setTestDistance(float distance) override;

    /**
    * @brief 设置大气温度
    * @param temperature 温度值
    */
    void setAtmosphericTemperature(float temperature) override;

    /**
    * @brief 设置相对湿度
    * @param humidity 湿度值
    */
    void setRelativeHumidity(int8_t humidity) override;

    /**
    * @brief 设置反射温度
    * @param temperature 温度值
    */
    void setReflectionTemperature(float temperature) override;

    /**
    * @brief 设置温宽上限
    * @param upperLimit 上限值
    */
    void setTemperatureUpperLimit(float upperLimit) override;

    /**
    * @brief 设置温宽下限
    * @param lowerLimit 下限值
    */
    void setTemperatureLowerLimit(float lowerLimit) override;

    /**
    * @brief 设置红外图谱数据
    * @param data 图谱数据
    */
    void setInfraredChartData(const QByteArray& data) override;

    /**
    * @brief 设置可见光照片数据
    * @param data 数据
    */
    void setVisibleLightPhotoData(uint8_t data) override;

    /**
    * @brief 设置红外照片数据
    * @param data 数据
    */
    void setInfraredPhotoData(uint8_t data) override;
private:
    QTableWidgetItem *createTableWidgetItem(const QString& text);
private:
    std::shared_ptr<InfraredFeature> m_infraredFeature;
    QGroupBox* m_pChartBox;
    QTextEdit* m_pChartData;
    QHBoxLayout* m_pMainLayout;
    QHBoxLayout* m_pLayout;

};

#endif // INFRAREDINFOTAB_H
